﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace BlackoutRugby.enums.jugador
{

    public class TipoHabilidadJuvenil : IComparable
    {
        public enum Tipo
        {
            Inexistente = 1,
            Despreciable,
            Horrible,
            Limitado,
            Moderado,
            Medio,
            Satisfactorio,
            Decente,
            Respetable,
            Admirable,
            Sensacional,
            Espléndido,
            Fantástico,
            Increíble,
            Grandioso,
            Superior,
            Maravilloso,
            Monumental,
            Majestuoso,
            Legendario,
            Divino
        }


        public enum TipoDesconocido
        {
            Desconocido = 1,
            Bajo,
            Medio,
            Alto
            
        }


        private Tipo res { get; set; }

        private TipoDesconocido resDes { get; set; }

        public TipoHabilidadJuvenil(Tipo t)
        {
            res = t;
            resDes = (TipoDesconocido)0;
        }

        public TipoHabilidadJuvenil(TipoDesconocido t)
        {
            res = (Tipo)0;
            resDes = t;
        }

        public TipoHabilidadJuvenil(int t)
        {
            res = (Tipo)t;
        }

        
        public int toInt()
        {

            if (res > 0)
                return (int)res;
            else
                return (int)resDes;
        }

        public override string ToString()
        {
            string cadena = "";
            if (res > 0)
            {
                switch (res)
                {
                    case Tipo.Inexistente: cadena = "Inexistente"; break;
                    case Tipo.Despreciable: cadena = "Despreciable"; break;
                    case Tipo.Horrible: cadena = "Horrible"; break;
                    case Tipo.Limitado: cadena = "Limitado"; break;
                    case Tipo.Moderado: cadena = "Moderado"; break;
                    case Tipo.Medio: cadena = "Medio"; break;
                    case Tipo.Satisfactorio: cadena = "Satisfactorio"; break;
                    case Tipo.Decente: cadena = "Decente"; break;
                    case Tipo.Respetable: cadena = "Respetable"; break;
                    case Tipo.Admirable: cadena = "Admirable"; break;
                    case Tipo.Sensacional: cadena = "Sensacional"; break;
                    case Tipo.Espléndido: cadena = "Espléndido"; break;
                    case Tipo.Fantástico: cadena = "Fantástico"; break;
                    case Tipo.Increíble: cadena = "Increíble"; break;
                    case Tipo.Grandioso: cadena = "Grandioso"; break;
                    case Tipo.Superior: cadena = "Superior"; break;
                    case Tipo.Maravilloso: cadena = "Maravilloso"; break;
                    case Tipo.Monumental: cadena = "Monumental"; break;
                    case Tipo.Majestuoso: cadena = "Majestuoso"; break;
                    case Tipo.Legendario: cadena = "Legendario"; break;
                    case Tipo.Divino: cadena = "Divino"; break;


                }
            }
            else
            {
                switch (resDes)
                {
                    case TipoDesconocido.Desconocido:  cadena = "-"; break;
                    case TipoDesconocido.Bajo: cadena = "Bajo"; break;
                    case TipoDesconocido.Medio: cadena = "Medio"; break;
                    case TipoDesconocido.Alto: cadena = "Alto"; break;
                }
            }
            return cadena;
        }


        public int CompareTo(object obj)
        {
            if(obj is TipoHabilidad)
            {

                TipoHabilidadJuvenil temp = (TipoHabilidadJuvenil)obj;

                if (res > 0)
                    return res.CompareTo(temp.res);
                else
                    return resDes.CompareTo(temp.resDes);
            }
            else
                return 0;
        }
    }
   
}